All Packages Class Hierarchy This Package Previous Next Index
Class com.sun.java.swing.text.GapContent
java.lang.Object
|
+----com.sun.java.swing.text.GapContent
- public final class GapContent
- extends Object
- implements AbstractDocument. Content, Serializable
An implementation of the AbstractDocument.Content interface
implemented using a gapped buffer similar to that used by emacs.
The underlying storage is a array of unicode characters with
a gap somewhere. The gap is moved to the location of changes
to take advantage of common behavior where most changes are
in the same location. Changes that occur at a gap boundry are
generally cheap and moving the gap is generally cheaper than
moving the array contents directly to accomodate the change.
The positions tracking change are also generally cheap to
maintain. The Position implementations (marks) store the array
index and can easily calculate the sequential position from
the current gap location. Changes only require update to the
the marks between the old and new gap boundries when the gap
is moved, so generally updating the marks is pretty cheap.
The marks are stored sorted so they can be located quickly
with a binary search. This increases the cost of adding a
mark, and decreases the cost of keeping the mark updated.
-
GapContent()
- Creates a new GapContent object.
-
GapContent(int)
- Creates a new GapContent object, with the initial
size specified.
-
createPosition(int)
- Creates a position within the content that will
track change as the content is mutated.
-
getChars(int, int, Segment)
- Retrieves a portion of the content.
-
getString(int, int)
- Retrieves a portion of the content.
-
insertString(int, String)
- Inserts a string into the content.
-
length()
- Returns the length of the content.
-
remove(int, int)
- Removes part of the content.
GapContent
public GapContent()
- Creates a new GapContent object. Initial size defaults to 10.
GapContent
public GapContent(int initialLength)
- Creates a new GapContent object, with the initial
size specified.
- Parameters:
- initialLength - the initial size
length
public int length()
- Returns the length of the content.
- Returns:
- the length >= 1
- See Also:
- length
insertString
public UndoableEdit insertString(int where,
String str) throws BadLocationException
- Inserts a string into the content.
- Parameters:
- where - the starting position >= 0, < length()
- str - the non-null string to insert
- Returns:
- an UndoableEdit object for undoing
- Throws: BadLocationException
- if the specified position is invalid
- See Also:
- insertString
remove
public UndoableEdit remove(int where,
int nitems) throws BadLocationException
- Removes part of the content.
- Parameters:
- where - the starting position >= 0, where + nitems < length()
- nitems - the number of characters to remove >= 0
- Returns:
- an UndoableEdit object for undoing
- Throws: BadLocationException
- if the specified position is invalid
- See Also:
- remove
getString
public String getString(int where,
int len) throws BadLocationException
- Retrieves a portion of the content.
- Parameters:
- where - the starting position >= 0
- len - the length to retrieve >= 0
- Returns:
- a string representing the content
- Throws: BadLocationException
- if the specified position is invalid
- See Also:
- getString
getChars
public void getChars(int where,
int len,
Segment chars) throws BadLocationException
- Retrieves a portion of the content. If the desired content spans
the gap, we copy the content. If the desired content does not
span the gap, the actual store is returned to avoid the copy since
it is contiguous.
- Parameters:
- where - the starting position >= 0, where + len <= length()
- len - the number of characters to retrieve >= 0
- chars - the Segment object to return the characters in
- Throws: BadLocationException
- if the specified position is invalid
- See Also:
- getChars
createPosition
public Position createPosition(int offset) throws BadLocationException
- Creates a position within the content that will
track change as the content is mutated.
- Parameters:
- offset - the offset to track >= 0
- Returns:
- the position
- Throws: BadLocationException
- if the specified position is invalid
All Packages Class Hierarchy This Package Previous Next Index